In a computing device, such as a server, router, desktop computer, laptop, etc., and other devices having processor logic and memory, the device includes an operating system and a number of application programs that execute on the computing device. The operating system and program applications are typically arranged in different layers of the device's computing structure. For example, many computing devices include an operating system layer and an application layer to enable the device to perform various tasks.
The operating system layer includes a “kernel”. The kernel is a master control program that runs the computing device. The kernel provides functions such as task, device, and data management, among others. The application layer includes application programs that perform particular tasks. These programs can typically be added by a user or administrator as options to a computer device. Application programs are executable instructions, which are located above the operating system layer and accessible by a user.
The application layer and other user accessible layers are often referred to as being in “user space”, while the operating system layer can be referred to as “kernel space”. As used herein, “user space” implies a layer of code which is more easily accessible to a user or administrator than the layer of code which is in the operating system layer or “kernel space”.
In various types of operating systems kernel configuration changes can be made that take effect immediately, i.e., without the need for reboot. The same kernel configuration changes can be made in a manner that affects subsequent boots of the system. However, in these various types of operating systems, the system administrator has to use two separate mechanisms to accomplish these changes: one to affect the running system and a separate one to affect subsequent boots.
In many contexts in software, it is necessary to ensure that a set of operations, e.g., kernel configuration changes, is handled completely. The only acceptable outcomes are that all of the operations complete, or none of them do; partial completion is unacceptable. Such a set of operations is usually called a “transaction,” and the completion of them in this fashion is said to be “atomic” or “transactional.”
Previous approaches to kernel configuration changes do not ensure that changes are applied both immediately and persistently using a single mechanism. Nor have previous approaches provided a method to ensure that kernel configuration changes are handled in a transactional fashion.